]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
VolumeStatus: track PulseAudio state and hide when disconnected
authorGiovanni Campagna <gcampagna@src.gnome.org>
Mon, 28 Mar 2011 14:10:11 +0000 (16:10 +0200)
committerGiovanni Campagna <gcampagna@src.gnome.org>
Thu, 25 Aug 2011 21:36:22 +0000 (23:36 +0200)
Only show the menu when the associated GvcMixerControl is ready, as
the connection can fail or PulseAudio may not be installed.

https://bugzilla.gnome.org/show_bug.cgi?id=645708

js/ui/status/volume.js

index 0c02a9e6040ffad5dfe67ff69a981e0e347f788a..98e8d30f6445240f621d463dd1a68078b80b1ec2 100644 (file)
@@ -29,7 +29,7 @@ Indicator.prototype = {
         PanelMenu.SystemStatusButton.prototype._init.call(this, 'audio-volume-muted', null);
 
         this._control = new Gvc.MixerControl({ name: 'GNOME Shell Volume Control' });
-        this._control.connect('ready', Lang.bind(this, this._onControlReady));
+        this._control.connect('state-changed', Lang.bind(this, this._onControlStateChanged));
         this._control.connect('default-sink-changed', Lang.bind(this, this._readOutput));
         this._control.connect('default-source-changed', Lang.bind(this, this._readInput));
         this._control.connect('stream-added', Lang.bind(this, this._maybeShowInput));
@@ -102,9 +102,14 @@ Indicator.prototype = {
         this._notifyVolumeChange();
     },
 
-    _onControlReady: function() {
-        this._readOutput();
-        this._readInput();
+    _onControlStateChanged: function() {
+        if (this._control.get_state() == Gvc.MixerControlState.READY) {
+            this._readOutput();
+            this._readInput();
+            this.actor.show();
+        } else {
+            this.actor.hide();
+        }
     },
 
     _readOutput: function() {